package cllectiondemo;

import java.util.*;

public class TestDriverSet {
    public static void main(String[] args) {
        System.out.println("=====================HashSet集合========================");
        System.out.println("HashSet集合：");
        test01();
        System.out.println("===================linkeHashSet集合==========================");
        System.out.println("linkeHashSet集合：");
        test011();
        System.out.println("===================TreeSet集合==========================");
        System.out.println("TreeSet集合：");
        test012();
    }


    /**
     * set接口-----hashset
     */
    public static void test01(){
        //创建一个HashSet集合对象
        //软件工程编程规范：面对接口的编程
        Set set = new HashSet();
        //set中添加元素
        set.add("zhangsan ");
        set.add("lisi  ");
        set.add("wangwu ");
        set.add("zhaosi  ");
        set.add("xiaoming  ");
        set.add(null);//Set接口的实现类中最多只能存储一个null值；

        //遍历元素
        System.out.println("使用Iterator接口进行遍历Set集合的元素：");
        //获取集合的迭代器对象
        Iterator iterator = set.iterator();
        //使用while循环一次遍历元素值
        while (iterator.hasNext()){
            String str = (String) iterator.next();//强制类型转换
            System.out.println(str);
        }
        System.out.println("使用foreach增强型的for循环进行遍历set集合的元素：");
        for (Object obj:set) {
            System.out.println(obj);
        }

    }

    /**
     * set接口--linkedhashset
     */
    public  static void test011() {
        //创建一个HashSet集合对象
        //软件工程编程规范：面向接口的编程
        Set set = new LinkedHashSet();
        //添加元素
        set.add("张三");
        set.add("李四");
        set.add("王五");
        set.add(null);
        set.add(null);

        //遍历元素
        System.out.println("使用Iterator接口进行遍历Set集合的元素");
        //获取集合的迭代器对象
        Iterator iterator = set.iterator();
        //使用While循环一次遍历元素值
        while (iterator.hasNext()) {
            String str = (String) iterator.next();
            System.out.println(str);
        }
        System.out.println("使用foreach增强型的for循环进行遍历Set集合的元素");
        for (Object obj : set) {
            System.out.println(obj);
        }
    }

    /**
     * set接口---Linkedhashset
     * TreeSet集合
     */
    public static void test012(){
        //创建一个HashSet集合对象
        Set set = new TreeSet();//不能有null空
        //添加元素
        set.add("李四");
        set.add("王五");
        set.add("赵四");
        //set.add(null);
        //set.add(null);

        //遍历元素
        System.out.println("使用Iterator接口进行遍历Set元素：");
        Iterator iterator = set.iterator();
        //使用while循环一次遍历元素值
        while (iterator.hasNext()){
            //取出当前遍历的元素
            String  str = (String) iterator.next();
            System.out.println(str);

        }
        System.out.println("使用foreach增强型的for循环进行循环遍历Set集合的元素：");
        for (Object obj:set) {
            System.out.println(obj);
        }
    }
}
